package com.dinzeer.legendreliclib.lib.util.check;

import net.minecraft.world.entity.LivingEntity;

import java.util.Optional;

/**
 * 提供实体检测相关的实用工具方法。
 * 主要功能包括获取玩家指向的生物实体。
 * 
 * @author Dinzeer
 * @version 1.0
 */
public class CheckEntity {
    /**
     * 获取玩家视线指向的最近生物实体。
     * 首先尝试使用精确射线检测，失败时使用视线方向近似检测。
     *
     * @param entity 执行检测的源实体
     * @param range 检测的最大距离
     * @return 指向的生物实体，未找到时返回null
     */
    public  static LivingEntity getPointedLivingEntity(LivingEntity entity, float range){
        LivingEntity target = EntityPointer.raycastForEntityTo(entity.level(), entity, 32, true);
        if (target == null) {
            Optional<LivingEntity> targetedEntity = EntityPointer.findTargetedEntity(entity, range);
            if (targetedEntity.isEmpty())
                return null;
            target = targetedEntity.get();
            return target;
        }
        return null;
    }
}
